package com.cy.pj.sys.common.web;

import com.cy.pj.common.exception.ServiceException;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Calendar;

/**
 * @author 张琪
 * @date 2020/11/21
 * @describe spirngMVC中的拦截器, 用来限制用户的登陆时长
 */

public class TimeAccessInterceptor implements HandlerInterceptor {
    /**
     * 该方法在控制器方法执行之前执行
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("TimeAccessInterceptor.preHandle");

//        1. 基于当前时间生成一个日历对象
        Calendar c = Calendar.getInstance();
//        2. 设置初始时间
        c.set(Calendar.HOUR_OF_DAY, 6);
        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.SECOND, 0);
//        3. 这里设置的是开始时间
        long start  = c.getTimeInMillis();
        c.set(Calendar.HOUR_OF_DAY, 23);
//        4. 这里设置的是结束时间
        long end = c.getTimeInMillis();
        long cTime = System.currentTimeMillis();
//        5. 判断登陆时的时间是否符合设定时间
        if(cTime < start || cTime > end)
            throw new ServiceException("不在访问时间内");
        return true;

    }
}
